The present invention relates to the management of the maintenance and development of interdependent software systems, and in particular of software systems that implement information exchange over a network, such as the internet.
Different computer systems and the databases they contain will often store data in incompatible formats and a time-consuming problem for developers has been how to exchange data between such systems efficiently. The XML standard (standing for eXtensible Markup Language) was designed to solve this problem and is now extensively used in computing and data management. XML is a markup language similar to HTML but designed specifically to describe data rather than display it. By storing data as XML definitions in an XML file, it is possible to achieve a cross-platform, software and hardware independent tool for transmitting information. All that system developers within the XML environment require in order to provide programs that are compatible for the purposes of data exchange is one or more XML schemata that define the required structure of the XML data file. The XML schemata include declarations of data structures and constraints of the XML object definitions to be contained therein.
The maintenance of complex software systems in conventional programming languages is facilitated by the provision of source control, version control, and team development facilities for multiple developers. However, these benefits are not easily extendable to the definitions of XML objects due to the unique nature of XML itself. XML is not a programming language, and therefore has no source code. Source control and version control of XML objects are therefore meaningless concepts in a conventional sense. However, these concepts are desirable, because a robust infrastructure for team development of software must contain comprehensive support for source control and version control of all objects developed by the team.
As mentioned above, XML provides a mechanism for declaring the data structures and constraints of named objects in schemata. The relationship between the definition of objects in XML and their use in the deployed software systems based on that XML is not analogous to the way the source code of a conventional programming language is compiled to create executable software for deployment. Rather, deployed XML systems are constructed from the XML definitions defined by the developer (schemata, transformations and so on), and multiple references to single objects are a necessary feature of any deployment implementation.
Controlling the evolution of complex XML environments is difficult because there is no easy way of charting exactly where or how everything defined in the XML definitions is actually referred to or used. This situation is further complicated by the fact that XML is invariably used either in conjunction with non-XML objects, or to describe non-XML objects, which are managed in another environment. Developers do not have access to a road map, or conceptual model of the entire system. Developers maintain the XML part of a system by working on the XML definitions themselves with little or no abstraction, which becomes a problem when single objects can be referred to or used in multiple, unpredictable places.
With no easily applicable mechanism for source control and version control, support for team development is effectively not possible. The consequences—when compared with conventional programming languages and development environments—are increased risk of error, increased development effort, and unpredictable effects when changes need to be made. Evolution of XML-based environments is therefore hazardous, particularly when those environments are complex and maintained by multiple developers.
It is an object of the present invention to facilitate the evolution of XML-based software systems, including providing a mechanism to apply source and version control to XML objects in a team development environment.
According to an aspect of the invention, there is provided an XML management system, comprising: a repository configured to store a manipulatable object model capable of representing metadata about objects in a user's computing environment; user accessible means for manipulating said object model to modify properties of objects thus represented; and means for extending said object model to handle new types of object by automatically generating descendent class(es) that are able to handle the new object within the object model and incorporating them into an XML management system runtime environment for participation in the object modelling process. The repository gives developers and administrators a database of metadata for the XML parts of their environments and is easily extendable to incorporate new types of object. The stored information makes it possible to chart all the relationships between objects in a true single-source view of the world, both in a development environment and in a deployed system. The metadata can be used to analyse the impact and predict the cost of change to the described system, and potentially to automate the implementation of change.
The XML management system may further comprise an import interface, capable of parsing incoming data streams comprising new non-XML objects and regenerating said object model to include said new non-XML objects. This feature provides a fast and efficient process by which non-XML objects can be incorporated into the object model without requiring extensive manual programming by a user or XML management system maintenance team.
The extensible, version-aware object model according to embodiments of the invention enables version control and source control to be applied to objects at the object-level. It also provides a high-level, object-oriented view of all the objects used in the system. An object in this model is truly a single-source object, therefore, however many times it is referenced or deployed in some way or other. The object model gives many advantages.
For example, property sets, such as style information, associated Java classes, and so on can be attached to individual objects before they are deployed into physical implementations of the logic.
From a pool of single objects, it is possible to build deployable ‘structures’ that are equivalent to schemata (or schema fragments), and publish them in the same way that a conventional software system would be built by compiling it from an identifiable code baseline. These may be referred to as ‘published contexts’, meaning the contexts in which we know that any given object is actually used.
It is also possible to identify where a system will break if an object in the model of the objects is changed, providing information about: which deployed structures (published contexts) are affected; where those structures are used in the system; and therefore, which parts of the system will break.
Finally, it is possible to version schemata and other exported output by versioning the objects in the schemata and applying a build mechanism to the set of objects that comprises a coherent, consistent set of deployable output.
The invention makes it possible to use a registry mechanism (associated with the use of a repository) to record where objects in the repository have come from, or been deployed. When developers need to change existing definitions, the system can therefore provide impact analysis, automated generation or regeneration of deployment environments, versioning of any object in the system, and change management for deployed environments.
Once the repository and object modelling environment exists according to embodiments of the invention, it is a relatively straightforward programming task to enable team development by introducing a user administration layer (groups, roles, permissions). A task-based check-in/check-out workflow can ensure safe conflict resolution both locally in users' private workspaces and centrally, in the shared repository.
According to a further aspect of the present invention, there is provided a system for developing and managing XML objects, comprising:
an interactive, on-screen, computer environment;
an extensible object model capable of representing objects and metadata about objects;
wherein
the system includes a framework of object classes which effect the manipulation of objects within said object model in response to user interaction and the persisting of objects between sessions in said environment; and
the system is updatable to handle a new type of object by the generation of the source code of one or more descendant classes of said object class framework, which descendant class or classes is adapted to the manipulation and persisting of said new type of object, whereby objects of such new type can then participate in said object model.